/*******************************************************************************
  * 文件：RunProtect.h
  * 作者：yk
  * 版本：v1.0.0
  * 日期：2024-03-20
  * 说明：炉头运行保护,依据条件限制运行参数
*******************************************************************************/
#ifndef _RUN_PROTECT_H
#define _RUN_PROTECT_H

/* 头文件 *********************************************************************/
#include "Typedefine.h"
#include "Constant.h"
#include "Macro.h"
#include "OS_Timer.h"

/* 宏定义 *********************************************************************/
// AC电压
#define HEAT_VOL_130V (0x56 - 0x1e)
#define HEAT_VOL_140V (0x5C - 0x1e)
#define HEAT_VOL_150V (0x63 - 0x1e)
#define HEAT_VOL_160V (0x69 - 0x1e)
#define HEAT_VOL_170V (0x6F - 0x1e)
#define HEAT_VOL_180V (0x76 - 0x1e)
#define HEAT_VOL_190V (0x7C - 0x1e)
#define HEAT_VOL_200V (0x82 - 0x1e)
#define HEAT_VOL_210V (0x8A - 0x1e)
#define HEAT_VOL_215V (0x8D - 0x1e)
#define HEAT_VOL_220V (0x90 - 0x1e)         // 114
#define HEAT_VOL_225V (0x94 - 0x1e)
#define HEAT_VOL_230V (0x97 - 0x1e)         // 121
#define HEAT_VOL_235V (0x9B - 0x1e)
#define HEAT_VOL_240V ((0x9E) - 0x1e)       // 128
#define HEAT_VOL_245V (131)                 // 131
#define HEAT_VOL_250V (0xA4 - 0x1e)         // 134
#define HEAT_VOL_255V (0xA4 - 0x1e)
#define HEAT_VOL_260V (0xAB - 0x1e)         // 141
#define HEAT_VOL_265V (144)
#define HEAT_VOL_270V (0xB2 - 0x1e)         // 148
#define HEAT_VOL_280V (0xB7 - 0x1e)
#define HEAT_VOL_290V (0xC0 - 0x1e)
#define HEAT_VOL_300V (0xC7 - 0x1e)

// IGBT NTC AD值
#define HEAT_TIGBT_40 200       // 233//0xA8
#define HEAT_TIGBT_45 190       // 228//0xB3
#define HEAT_TIGBT_50 181       // 223//0xBD
#define HEAT_TIGBT_55 170       // 218//0xC6
#define HEAT_TIGBT_60 160       // 211//0xCD
#define HEAT_TIGBT_65 147       // 205//0xD4
#define HEAT_TIGBT_70 137       // 197//0xDA
#define HEAT_TIGBT_75 127       // 189//0xDF
#define HEAT_TIGBT_80 116       // 181//0xE4
#define HEAT_TIGBT_85 106       // 171//0xE8
#define HEAT_TIGBT_90 97        // 162//0xEB
#define HEAT_TIGBT_95 88        // 152//0xEE
#define HEAT_TIGBT_98 82        // 146//0xEF
#define HEAT_TIGBT_100 79       // 142//0xF0
#define HEAT_TIGBT_105 72       // 133//0xF2
#define HEAT_TIGBT_110 64       // 123//0xF4
#define HEAT_TIGBT_115 58       // 114//0xF5
#define HEAT_TIGBT_120 52       // 104//0xF7
#define HEAT_TIGBT_124 47       // 96//0xF8
#define HEAT_TIGBT_300 0        // 0//0xFF

// 面板NTC AD值
#define HEAT_TMAIN_30 240       // 
#define HEAT_TMAIN_45 228       // 27//(0x41)		//Remain "H" Temp Threshold
#define HEAT_TMAIN_50 222       // 33//0x4B
#define HEAT_TMAIN_55 217       // 38//0x55`
#define HEAT_TMAIN_60 210       // 45//0x62
#define HEAT_TMAIN_65 203       // 52//0x6D
#define HEAT_TMAIN_70 195       // 60//0x79
#define HEAT_TMAIN_75 187       // 68//0x83
#define HEAT_TMAIN_80 178       // 77//0x8E
#define HEAT_TMAIN_85 169       // 86//0x99
#define HEAT_TMAIN_90 160       // 95//0x9F
#define HEAT_TMAIN_100 141      // 114//0xB0
#define HEAT_TMAIN_110 122      // 133//0xBF
#define HEAT_TMAIN_120 104      // 151//0xCB
#define HEAT_TMAIN_130 88       // 167//0xD7
#define HEAT_TMAIN_140 74       // 181//0xDD
#define HEAT_TMAIN_150 62       // 193//0xE4
#define HEAT_TMAIN_160 51       // 204//0xE9
#define HEAT_TMAIN_170 43       // 212//0xED
#define HEAT_TMAIN_175 39       // 215//0xED
#define HEAT_TMAIN_180 36       // 219//0xF1
#define HEAT_TMAIN_185 33       // 222//0xED
#define HEAT_TMAIN_190 30       // 225//0xF3
#define HEAT_TMAIN_200 25       // 230//0xF5
#define HEAT_TMAIN_210 21       // 234//0xF7
#define HEAT_TMAIN_220 18       // 237//0xF8

// 面板及IGBT NTC的短路、断路
#define HEAT_NTC_OPEN       0xFA
#define HEAT_NTC_SHORT      0x04

#define HEAT_IGBTNTC_OPEN   0xFA
#define HEAT_IGBTNTC_SHORT  0x04

// 检测周期设置
#define HEAT_IGBT_CHECK_TICK    20 // 20*500ms = 10s -- IGBT温度
#define Comm_CHECK_TICK         10 // 10*500ms = 5s  -- 通讯故障

/* 类型定义 *******************************************************************/
/* 变量声明 *******************************************************************/
typedef struct
{
    Bool  bCommFailFlagLast[4];
    Bool  bCommFailFlag[4];             // 考虑将其放到一个专用结构体中
    U8    au8CommCheckTick[4];          // 四个芯片通讯检测计时

    U8    au8IGBTTempLevel[4];          // IGBT温度状态
    U8    au8IGBTTempCheckTick[4];      // IGBT温度检测倒计时

    Timer_ts    asProtectScanTimer;        // 运行过程中的保护扫描定时器
}RunProtectCtrl_ts;  // 设备保护控制

/* 函数声明 *******************************************************************/

void DevProtect_SetCommCheckTick(U8 u8CZIndex);

Bool DevProtect_GetCommFailFlag(U8 u8CZIndex);      // 获取通讯故障标志位
// Bool DevProtect_CheckCommFail(void);                // 检查通讯故障

void DevProtect_SetPower(U8 u8CZIndex,U8 u8Power);  // 设置炉头功率
void DevProtect_Init(void);                         // 初始化

#endif /* _RUN_PROTECT_H */

/***************************** 文件结束 ***************************************/

